
package com.ijpay.wxpay.model;

import com.macro.mall.common.core.model.BaseModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>IJPay 让支付触手可及，封装了微信支付、支付宝支付、银联支付等常用的支付方式以及各种常用的接口。</p>
 *
 * <p>不依赖任何第三方 mvc 框架，仅仅作为工具使用简单快速完成支付模块的开发，可轻松嵌入到任何系统里。 </p>
 *
 * <p>IJPay 交流群: 723992875</p>
 *
 * <p>Node.js 版: https://gitee.com/javen205/TNWX</p>
 *
 * <p>统一下单 Model</p>
 *
 * @author Javen
 */
@Builder
@AllArgsConstructor
@Getter
@Setter
public class UnifiedOrderModel extends BaseModel {
    //微信开放平台审核通过的应用APPID（请登录open.weixin.qq.com查看，注意与公众号的APPID不同）
    private String appid;
    //微信支付分配的商户号
    private String mch_id;
    //
    private String sub_appid;
    //
    private String sub_mch_id;
    //终端设备号(门店号或收银设备ID)，默认请传"WEB"
    private String device_info;
    //随机字符串，不长于32位。推荐随机数生成算法
    private String nonce_str;
    //签名，详见签名生成算法
    private String sign;
    //签名类型，目前支持HMAC-SHA256和MD5，默认为MD5
    private String sign_type;
    //商品描述交易字段格式根据不同的应用场景按照以下格式：
    //APP——需传入应用市场上的APP名字-实际商品名称，天天爱消除-游戏充值。
    private String body;
    //商品详细描述，对于使用单品优惠的商户，该字段必须按照规范上传，详见“单品优惠参数说明”
    private String detail;
    //附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
    private String attach;
    //商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号
    private String out_trade_no;
    //符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
    private String fee_type;
    //订单总金额，单位为分，详见支付金额
    private String total_fee;
    //支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP
    private String spbill_create_ip;
    //订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
    private String time_start;
    //订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。订单失效时间是针对订单号而言的，由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期，所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id。其他详见时间规则
    //建议：最短失效时间间隔大于1分钟
    private String time_expire;
    //订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠
    private String goods_tag;
    //接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。
    private String notify_url;

    private String trade_type;
    private String product_id;
    //支付类型
    private String limit_pay;
    private String openid;
    private String sub_openid;
    //Y，传入Y时，支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能，传此字段才可生效
    private String receipt;
    private String scene_info;
    private String profit_sharing;
}

